// ActionScript file

			import mx.binding.utils.ChangeWatcher;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;

			import mx.events.ItemClickEvent;
			import mx.events.AdvancedDataGridEvent;
			import mx.events.CollectionEvent;
			import mx.events.CloseEvent;
			 
			import mx.controls.TextInput;
			import mx.controls.DateField;
			import mx.controls.NumericStepper;    
			import mx.controls.ButtonLabelPlacement;
			
			import mx.managers.PopUpManager;	
			import mx.collections.ArrayCollection;
			import mx.formatters.CurrencyFormatter;
			
			import com.sodimac.v2s.model.ComprasModelLocator;
			import com.sodimac.v2s.vo.SesionVO;
			import com.sodimac.v2s.vo.InfoSfpVO;
			import com.sodimac.v2s.view.*;
			import com.sodimac.v2s.view.components.ventana_RechazarPropuesta;	
			import com.sodimac.v2s.events.cargarInfoSfpEvent;
			import com.sodimac.v2s.events.cargarProductosEvent;
			import com.sodimac.v2s.events.grabarPedidoPaisEvent;
			import com.sodimac.v2s.events.cargarInfoLCEvent;						
			import com.sodimac.util.alerts.alert;
			import com.sodimac.util.commons.Session;
			import com.sodimac.util.commons.Resources;
			import com.sodimac.util.commons.EstadosBPM;
			import com.sodimac.util.commons.UtilString;
			

			/* datos de pantalla */        			
			[Bindable] public var infoSfpVo:InfoSfpVO = new InfoSfpVO();
			[Bindable] public var uploadURL: String;
			[Bindable] public var downloadURL_PO: String;
			[Bindable] public var downloadURL: String;
			[Bindable] public var fileLC: String;
			[Bindable] public var filePO: String;						
			[Bindable] public var existeOC: String;	
		
			[Bindable] public var codPais: String;
			[Bindable] public var empresaId: String;
			[Bindable] public var nombrePais: String;
			[Bindable] public var pedidoCorpId: Number;
			[Bindable] public var ordenCompraId: String;
			[Bindable] public var purchOrderId: String;
			[Bindable] public var cartaCreditoId: String;
			[Bindable] public var formaPago: String;
			[Bindable] public var paises: XMLList;
			[Bindable] public var reporteURL: String;
			
			[Bindable] private var modelo: ComprasModelLocator = ComprasModelLocator.getInstance();
			
			private var cwOC:ChangeWatcher; 
			private var cwArchivo:ChangeWatcher;
			private var cwArchivoPO:ChangeWatcher;
			private var cwLCUpload:ChangeWatcher;



			
			private function onInit():void
			{
				trace("____"+  this.name + " -->  onInit.");
			
				//Escuchar cambios en la propiedad source de dg_corp 
				cwArchivo = ChangeWatcher.watch(ComprasModelLocator.getInstance(),'existeArchivoLC',onChange);
				cwArchivoPO = ChangeWatcher.watch(ComprasModelLocator.getInstance(),'existeArchivoPO',onChangePO);
				cwOC = ChangeWatcher.watch(ComprasModelLocator.getInstance(),'existeOC',onChangeOC);
				
				initUpload();
			}

  			private function onChange(e:Event):void
			{
			    
			    trace(" ____"+  this.name + " -->  onChange.");
				//activar link
				if (fileLC == "1")  
				{
					lnkDownload.visible = true;
				}	
		  				    
			    cwArchivo.unwatch();
			}
			 			
  			private function onChangePO(e:Event):void
			{
			    
			    trace(" ____"+  this.name + " -->  onChangePO.");
				//activar link
				if (filePO == "1")  
				{
					lnkVerPO.visible = true;
				}	
		  				    
			    cwArchivoPO.unwatch();
			} 
			
  			private function onChangeOC(e:Event):void
			{
			    
			    trace(" ____"+  this.name + " -->  onChangeOC.");
				if (existeOC == "1")  
				{
					//hide link y disable buttons when don't exists OC
					lnkVerOC.visible = false;   
					btnEnviar.enabled = false;
					btnUpload.enabled = false;
				} 
				else
				{
					//dispach event for view OC
					var prodProEvent:cargarProdPropuestosEvent = new cargarProdPropuestosEvent();
					prodProEvent.metodo = "consultaProductosPropuestos";
					prodProEvent.idPedidoCorp = pedidoCorpId;
					prodProEvent.idPais = codPais;
					prodProEvent.idEmpresa = empresaId;
					prodProEvent.dispatch(); 				
				
				}	
		  				    
			    cwOC.unwatch();
			} 


			private function onCreationComplete():void
			{
				trace("____"+  this.name + " -->  onCreationComplete.");
				
			    if (codPais == "CL") {
			    	imagePais.source =  Resources.banderaCL;
			    } else if (codPais == "CO")
			    {
			    	imagePais.source =  Resources.banderaCO;
			    } else if (codPais == "PE")
			    {
			    	imagePais.source =  Resources.banderaPE;
			    } else if (codPais == "AR")
			    {
			    	imagePais.source =  Resources.banderaAR;
			    }
			    
			    nombrePais = XML(paises).pais.(@codIata == codPais).@nombre; 	
			}
			
			
			
			private function onClickBtnEnviar():void
			{
				trace("____"+  this.name + " -->  onClickBtnEnviar.");
				
				modelo.existeArchivoLC = null;
				
	         	//re-llamada a servicio 	       
				var lcEvent:cargarInfoLCEvent = new cargarInfoLCEvent();
				lcEvent.idPedidoCorp = pedidoCorpId;
				lcEvent.idPais = codPais;
				lcEvent.idEmpresa = empresaId;
				lcEvent.numeroOC = Number(ordenCompraId);
				lcEvent.numeroLC = Number(cartaCreditoId);
				lcEvent.dispatch();				
				
				cwLCUpload = ChangeWatcher.watch(ComprasModelLocator.getInstance(),'existeArchivoLC',getLCUploded);  
				
			}


			private function getLCUploded(e:Event):void
			{
				var existe:String = modelo.existeArchivoLC; 
				trace("____"+  this.name + " -->  getLCUploded.   existe=" + existe );	
				
				cwLCUpload.unwatch();								
					
				if (existe == "0")
				{
					alert.warning("Antes de enviar su confirmación, debe adjuntar (upload) la L/C.");
				} 
				else
				{
					alert.success("La L/C ha sido enviada exitosamente.", listenerAction);
				}
				
			}

		      
		      
			private function listenerAction(closeEvent:CloseEvent):void
			{
				var sesion:Session = new Session();
				var resp:Object = new Object();
						      	
		      	btnEnviar.enabled = false;
		      	btnGuardar.enabled = false;
		      	
		      	//se envia estado a BPM
				resp.estado = EstadosBPM.ENVIO;
//				resp.codigoCartadeCredito = cartaCreditoId;
				sesion.callbackBPM(resp);				
				
				sesion.endSession();
					
			}

			
			private function onClickBtnGuardar():void
			{
				//only close session	
				alert.success("La L/C ha sido guardada exitosamente.", alertListener);
			}				
						

			private function alertListener(eventObj:CloseEvent):void 
			{
				var sesion:Session = new Session();

		      	btnGuardar.enabled = false;
		      	btnEnviar.enabled = false;

				sesion.endSession();
			}
			
			
			private function generarReporte(formato:String):void 
			{
				
			    //call report					
//				var variables:URLVariables = new URLVariables();
//				variables.pNumeroSFP = infoSfpVo.numeroSFP;
//				variables.pPais = nombrePais;
//				variables.pEstado = infoSfpVo.estado; 
//				variables.pFecha = infoSfpVo.fecha_formato;
//				variables.pProveedor = infoSfpVo.proveedorNombre + '  ( ' + infoSfpVo.proveedorId + ' )';
//				variables.pVersion = infoSfpVo.version;
//				variables.pIntMerchant = infoSfpVo.merchantNombre;
//				variables.pOrdenCompra = ordenCompraId;
//				variables.pPurchaseOrder = purchOrderId + ' ( FP:'+ formaPago + ' )';
//				variables.pLetterCredit = cartaCreditoId;								 
//				variables.formato = formato;
			            
			    var request:URLRequest = new URLRequest();
				request.url = reporteURL + "?formato="+ formato +
								"&pNumeroSFP="+ infoSfpVo.numeroSFP +
								"&pPais="+ nombrePais +
								"&pEstado="+ infoSfpVo.estado + 
								"&pFecha="+ infoSfpVo.fecha_formato +
								"&pProveedor="+ infoSfpVo.proveedorNombre + " ( " + infoSfpVo.proveedorId + " )" +
								"&pVersion="+ infoSfpVo.version +
								"&pIntMerchant="+ infoSfpVo.merchantNombre +	
								"&pOrdenCompra="+ ordenCompraId +
								"&pPurchaseOrder="+ purchOrderId + " ( FP:"+ formaPago + " )"+
								"&pLetterCredit="+ cartaCreditoId;												
				
				request.method = URLRequestMethod.POST;
				//request.data = variables;
			    navigateToURL(request, '_blank');				    					
				
			   }

